#include <iostream>
#include <sys/ipc.h>
#include <sys/msg.h>
#include <unistd.h>
#include <cstring>

typedef struct{
    long mtype;
    char mtext[1024];
}MSG_BUF;

int main(){
    key_t key=ftok("./msgclient.cc",0x6666);
    if(key<0){
        perror("ftok error");
        exit(1);
    }
    
    int msgid=msgget(key,IPC_CREAT| 0666);
    if(msgid<0){
        perror("msgget error");
        exit(2);
    }
    
    MSG_BUF msg;
    printf("Server: Waiting for messages...\n");
    while(1){
        int ret=msgrcv(msgid,&msg,sizeof(msg.mtext),1,0);
        if(ret<0){
            perror("msgrcv error");
            exit(3);
        }
        if(strncmp(msg.mtext,"quit\n",5)==0 || strncmp(msg.mtext,"quit",4)==0){
            break;
        }
        printf("msgclient>>>%s",msg.mtext);
        fflush(stdout);
        sleep(1);
    }
    msgctl(msgid,IPC_RMID,NULL);
    return 0;
}